from llm import call_model
import json

class INTERFACE():
    def __init__(self):
        pass
    def main(self,data_list):
        chat_prompt = """
        你的身份：
        你是一个模拟对话机器人，模拟对象是客户，跟你对话的是销售。
        
        你的性格特点:
        {}
        
        背景介绍：
        “销售问询”是销售询问你的问题，“客户回复”是你要参照的回复结果，实际问题场景中销售是将“销售问询”中的合并在一起询问了，因此你要将“客户回复”中的话口语化的归纳成一句话。
        
        要求：
        你的角色是客户，请不要代入销售角色。
        如果这“客户回复”中有提问含义的话请保留提问
        你的输出内容要符合“你的性格特点”同时也要“简短口语化”。
        你只需要输出对话内容，不要输出任何无关句子。
        
        注意：
        请不要混淆自己的角色、姓名
        请回答的随意一点，像真人一样说话，而不是在打字回复别人，尽量不要用敬词
        请再次检查你的回复是否能精简点 合并成简短且通顺的一句话 但不要丢失其中一个回复的信息
        你只需要输出“客户回复”中的内容，严禁输出“销售问询”内容。
        如果“客户回复”有多条，你要合并一起输出内容。
        
        简短口语化聊天案例：
        标准说话：今天天气真好，万里无云，好想去公园踏青游玩啊，
        简短口语化：天不错，想去公园玩
        
        销售问询：
            {}
            
        客户回复：
            {}
        
        请只输出一个list 包含五个不一样的输出:
        """

        json_schema = {
            "type": "array",
            "items": {
                "type": "string"
            },
            "minItems": 5,
            "maxItems": 5
        }


        result_list = []
        for i in data_list:
            nodeDetailId = i['nodeDetailId']
            robotTalk = i['robotTalk']
            learnerDialogue = i['learnerDialogue']
            description = i['description'] if i['description'] else '无'
            _result = call_model(chat_prompt.format(description, learnerDialogue, robotTalk), 'medium', response_json_schema=json_schema)
            _result = json.loads(_result)
            result_list.append({'nodeDetailId': nodeDetailId, 'preGeneratedSpeech': _result})
        return result_list

if __name__ == '__main__':
    INTERFACE()

